先介绍一下call()的用法,apply()的用法与之大致相同,只不过参数列表略有不同
call()在我看来主要的功能就是在不修改对象的情况下对对象的属性进行 重写,使之继承一个新对象的属性
Symtax: fun.call(thisArg[, arg1[, arg2[, ...]]])
先举个简单的例子:
function vehicle(color, speed) {
this.color = color;
this.speed = speed;
}
function car(color,speed,price) {
vehicle.call(this,arguments);
this.price = price;
}
var mycar = new car("red", 100, 2000);
alert("汽车颜色是" + mycar.color + ", 速度是 " +
mycar.speed + ", 价格是" + mycar.price);
//汽车颜色是red,速度是100,价格是2000
通过例子可以看出可以call方法增加对象的属性信息,
也可以通过使用call方法覆盖原对象的属性
在举个简单的和作用域结合的例子
var x = 1;
function method() {
alert(this.x);
}
var c = {};
c.x = 0;
c.m = method;
c.m.apply(); //1,此时调用的是全局对象
c.m.apply(c); //0,此时调用的是对象c
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。